#include "utils.h"

// Retourne 1 si la chaine n'est composé que de chiffres
int str_isInteger(char *s)
{
    char *p1;
      
    for (p1=s; *p1; p1++) {
      if (*p1 >= 'A' && *p1 <= 'z' ){
          return 0;
      }
    }
      
    return 1;
}

// Split une chaine en fonction d'un délimiteur
char **str_split (char *str, const char *delimiter)
{
   char **tab = NULL;

   if (str != NULL && delimiter != NULL)
   {
      int i;
      char *cs = NULL;
      size_t size = 1;
      
      for (i = 0; (cs = strtok (str, delimiter)); i++)
      {
         if (size <= i + 1)
         {
            void *tmp = NULL;
            size <<= 1;
            tmp = realloc (tab, sizeof (*tab) * size);
            if (tmp != NULL)
            {
               tab = tmp;
            }
            else
            {
               fprintf (stderr, "Memoire insuffisante\n");
               free (tab);
               tab = NULL;
               exit (EXIT_FAILURE);
            }
         }
         tab[i] = cs;
         str = NULL;
      }
      tab[i] = NULL;
   }
   return tab;
}

// Remplace un caractère dans la chaine
char *str_replace (char *str, char charToReplace, char replacement)
{ 
  char *p1;
 
  for (p1=str; *p1; p1++) {
    if (*p1 == charToReplace){
      *p1 = replacement;
    }
  }
 
  return str;
}


void clear_stream(FILE *in)
{
    int ch;
    clearerr(in);
    do
        ch = getc(in);
    while (ch != '\n' && ch != EOF);
    clearerr(in);
}

int max(int a, int b)
{
    if(a > b)
        return a;
    else
        return b;
}